package com.qkm.xinguan.repository;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qkm.xinguan.domain.entity.HouseInfo;
import com.qkm.xinguan.domain.transform.dto.HouseInfoDTO;
import com.qkm.xinguan.domain.transform.error.HouseErrorInfo;
import com.qkm.xinguan.domain.transform.form.HouseInfoSearchForm;
import com.qkm.xinguan.response.Result;
import com.qkm.xinguan.vo.HouseInfoVo;

import java.io.IOException;
import java.util.List;

/**
 * 房屋信息
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2021-12-01 15:13:15
 */

public interface HouseInfoRepository extends IService<HouseInfo> {
	/**
	 * 分页获取房屋信息列表
	 *
	 * @param page 页数
	 * @param size 条数
	 * @return Page<Notice>
	 */
	Page<HouseInfoVo> getHouseInfoListPage(Integer page, Integer size);

	/**
	 * 条件查询房屋列表，并且分页
	 *
	 * @param houseInfoSearchForm 查询框
	 * @param page           页码
	 * @param size           数量
	 * @return Page<HouseInfoVo>
	 */
	Page<HouseInfoVo> searchHouseInfoListPage(HouseInfoSearchForm houseInfoSearchForm, Integer page, Integer size);

	/**
	 * @param id
	 * @param houseInfoDTO
	 * @return
	 */
	Result update(Long id,HouseInfoDTO houseInfoDTO) throws IOException;

	/**
	 * 根据房屋id设置审核通过
	 *
	 * @param id     房屋id
	 */
	int updateHouseInfoStatusToPassById(Long id);

	/**
	 * 根据房屋id设置审核不通过
	 *
	 * @param id     房屋id
	 */
	int updateHouseInfoStatusToFailById(Long id, HouseErrorInfo errorInfo);

	HouseInfo getOnlyById(Long id);

	/**
	 * 分页获取房屋信息列表
	 */
	/**
	 * 根据userID返回对应的房屋信息
	 * @param houseInfoPage
	 * @return
	 */
	Page<HouseInfo> selectHouseInfoByUserId(Page<HouseInfo> houseInfoPage);

	List<HouseInfo> randomFour();

	int leaseHouseInfoById(Long id);
}

